'''
@Problem description:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
在数组中找到两个数的和等于给定值，返回这两个数的索引。

@For example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
'''


class TwoSumSolution:
    def twoSum(self, nums, target):
        '''
        :param nums: List[int]
        :param target: int
        :return: List[int]
        '''
        for i in range(len(nums)):
            for j in range(i + 1, len(nums)):
                if (nums[i] + nums[j] == target):
                    return [i, j]

    '''hashmap'''
    def twoSum2(self, nums, target):
        length = len(nums)
        dic = dict(zip(nums, list(range(length))))
        for i in range(length):
            complement = target - nums[i]
            if (complement in dic.keys() and dic.get(complement) != i):
                return [i, dic.get(complement)]
